Vagrant 使用配置详解

Vagrant介绍

Vagrantfile,官方解释是这样的:The primary function of the Vagrantfile is to describe the type of machine required for a project, and how to configure and provision these machines。简单来说就是配置这个虚拟主机网络连接方式,端口转发,同步文件夹,以及怎么和puppet,chef结合的一个配置文件。执行完$ vagrant init后,在工作目录中,你会发现此文件。

安装

官网下载安装包,下一步下一步

PS:需要下载virtualbox(版本最好都是最新版、这样应该不会有兼容性的问题)

PPS:如果提示VT-X和hyper-V之类的问题,首先检查一下主板BIOS的VT-X虚拟化开启没有,然后将在windows控制面板的添加功能中卸载hyper-V的服务

使用

  1. 新建一个文件夹并进入

  2. 将下载好的BOX添加到本地镜像中

    1
    2
    vagrant box add {本地BOX名称} {BOX路径}
    vagrant box list #查看
  3. 启动

    1
    2
    3
    vagrant init {本地BOX名称}
    # 会在本地生成Vagrantfile配置文件
    # 如果本地没有该BOX,则从默认仓库中拉取
  4. 启动虚拟机

    1
    vagrant up
  5. 链接虚拟机

    1
    vagrant ssh

配置文件详解

集群文件例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Vagrant.configure("2") do |config|
config.vm.define :web do |web|
web.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
#v.memory = 1024
#v.cpus = 2
#v.name = marchine1
end
web.vm.box = "CentOs7"
web.vm.hostname = "web"
web.vm.network :private_network, ip: "192.168.33.10"
# web.vm.network :public_network
web.vm.network :forwarded_port, guest:80, host:8080
web.vm.synced_folder "src/", "/srv/website"
end

config.vm.define :redis do |redis|
redis.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "redis", "--memory", "512"]
end
redis.vm.box = "CentOs7"
redis.vm.hostname = "redis"
redis.vm.network :private_network, ip: "192.168.33.11"
end
end

执行脚本

内部脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Vagrant.configure("2") do |config|

config.vm.provision :shell,

:inline => "echo Hello, World"

end


$script = <<SCRIPT

echo I am provisioning...

date > /etc/vagrant_provisioned_at

SCRIPT

Vagrant.configure("2") do |config|

config.vm.provision :shell, :inline => $script

end

外部脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Vagrant.configure("2") do |config|

config.vm.provision :shell, :path => "script.sh" #脚本的路径相对于项目根,也可使用绝对路径

end

#脚本也可传递参数
Vagrant.configure("2") do |config|

config.vm.provision :shell do |s|

s.inline = "echo $1"

s.args = "'hello, world!'"

end

end

Vagrant 常用命令清单

  • vagrant box add 添加box
  • vagrant init 初始化 box
  • vagrant up 启动虚拟机
  • vagrant ssh 登录虚拟机
  • vagrant box list 列出 Vagrant 当前 box 列表
  • vagrant box remove 删除相应的 box
  • vagrant destroy 停止当前正在运行的虚拟机并销毁所有创建的资源
  • vagrant halt 关机
  • vagrant package 把当前的运行的虚拟机环境进行打包为 box 文件
  • vagrant plugin 安装卸载插件
  • vagrant reload 重新启动虚拟机,重新载入配置文件
  • vagrant resume 恢复被挂起的状态
  • vagrant status 获取当前虚拟机的状态
  • vagrant suspend 挂起当前的虚拟机
  • vagrant global-status 查看当前 vagrant 管理的所有 vm 信息
--------------------本文结束,感谢您的阅读--------------------

本文标题:Vagrant 使用配置详解

文章作者:弓昭

发布时间:2018年12月24日 - 20:22

最后更新:2020年04月08日 - 22:20

原始链接:https://gongzhao1.gitee.io/Vagrant 使用配置详解/

联系邮箱:gongzhao1@foxmail.com